// 第一种构造函数继承 就是在子类执行下父类的方法 (原型链的方法没有得到继承)
// 第二种原型链继承(公用了一个属性)
// 组合继承 (父类的方法频繁的调用)
// 寄生组合继承 (解决了构造函数的指向,还解决了重新执行父类方法的问题)
// class继承,一个比较完美的继承


// 这里主要强调下寄生组合继承的实现

function F() {
  this.name = "父亲"
  this.arr = [1, 2, 3]
}
function C() {
  F.call(this)
}
C.prototype = Object.create(F.prototype)
C.prototype.constructor = C
let aa = new C()
let bb = new C()


console.log(aa.name);
console.log(aa.arr.push(1111));
console.log(aa.arr);
console.log(bb.arr, '1111111111111111111111111111');



